import {exec} from 'child_process';

const cmd = 'chcp 65001 && tasklist /FO CSV';
const getSysTaskList = () => {
    return new Promise((resolve, reject) => {
        exec(cmd, (error: any, stdout: any, stderr: any) => {
            if (error) {
                console.error(`exec error: ${error}`);
                return;
            }
            if (stderr) {
                console.error(`stderr: ${stderr}`);
                return;
            }

            // 移除命令输出的第一行，它是标题行
            const lines = stdout.split('\r\n');
            lines.shift(); // 移除语言转换行 Active code page: 65001
            lines.shift(); // 移除字段名的首行
            lines.pop();    // 移除末尾的空行

            // 解析每一行，转换为JSON对象
            const processes = lines.map((line: any) => {
                const parts = line.split('","').map((item: string) => item.replaceAll('"', ''));

                return {
                    ImageName: parts[0],
                    PID: Number(parts[1]),
                    SessionName: parts[2],
                    SessionNumber: parts[3],
                    MemUsage: parts[4]
                };
            });

            resolve(processes);
        });
    });
};


export default getSysTaskList;